Dynamic Domain Name System (DDNS) is a critical architectural component of network systems. A domain name system may be analogized as an electronic telephone book that uses domain names to find IP addresses (IP lookup) and IP addresses to find domain names (domain name lookup).
Berkeley Internet Name Domain (BIND) is the most commonly used DNS server on the Internet, especially on Unix-like systems, where it is a de facto standard. While BIND provides many useful features, it imposes a number of architectural limitations on the DNS systems that use it. For example, BIND does not support multiple masters in the same zone. A zone is an individual domain, subdomain, or portion of the domain name system administered by the same authority. Additionally, BIND does not permit a secondary DNS server to update a primary DNS server. Some of the consequences of these limitations are described below.
FIG. 1 illustrates a simplified flow of an IP lookup. The IP lookup utilizes a query-response exchange. DNS client 100 issues a query 105 for the IP address of “example.com” to DNS server 120. DNS server 120 sends a response 110 comprising the address “192.0.2.1.”
IP addresses are typically issued dynamically by a dynamic host configuration protocol (DHCP) server. The IP address is issued in the form of a “lease” that has a specified expiration time and date. FIG. 2 illustrates an exchange between a client and DHCP server. The DHCP client 230 broadcasts a DHCP discover message 200 that is received by DHCP server 240. DHCP server 240 replies with a DHCP offer 205 comprising an IP address. The DHCP client 230 responds with a DHCP request 210 accepting the DHCP offer 205 and the DHCP server 240 responds with a DHCP acknowledgement 215 comprising the IP address. At some point in time, the DHCP client 230 indicates that it is releasing the IP address by sending a DHCP release message 220. The DHCP client 230 is responsible for renewing the lease before the expiration date and time.
The domain name system can be updated dynamically by connecting a DNS server to a DHCP server. FIG. 3 illustrates the message flow of a dynamic domain name system in which the DHCP server 240 sends a DNS update message 305 to DDNS server 300 following the issuance on an IP address to a client (as indicated by the acknowledgement message 215 sent by the DHCP server 240 to the DHCP client 230). When the client releases the IP address, a DNS update message 310 is sent to the DDNS server.
Given the importance of the domain name system, the system is structured with multiple redundancies. FIG. 4 illustrates that the flow of updates is from a primary (or master) DNS server to a secondary DNS server in a dynamic DNS system implementing BIND. This flow is unidirectional. DHCP server 400 sends a DNS update message 415 to primary DNS server 405. Primary DNS server 405 sends a response 420 to DHCP server 400 and a DNS update message 425 to secondary DNS server 410. In this configuration, secondary DNS server 410 cannot receive a DNS update directly from DHCP server 400 and cannot update a primary DNS server.
FIG. 5 illustrates a consequence of this architecture. If the primary DNS server 505 is unreachable, the DNS update message 515 from DHCP server 500 will not be received by the primary DNS server 505. Thus, secondary DNS server 510 cannot be updated even though it is fully operable because communication from DHCP server 500 directly to secondary DNS server 510 is prohibited.
FIG. 6 illustrates a modified flow in which the DNS update is sent directly from the DHCP server to the secondary DDNS server. As illustrated, DHCP server 600 sends a DNS update message 615 to primary DNS server 605. However, because primary DNS server 605 is “down,” the DNS update message 615 is not received by primary DNS server 605. DHCP server 600 then sends a DNS update message 620 to secondary DNS server 610. Secondary DNS server 610 sends a response message 625 to DHCP server 600 acknowledging the update message 620. However, BIND does not support multiple masters for the same zone, and this flow is not supported by current DHCP servers that cooperate with a BIND server. Even if this functionality could be added, the domain name system does not support updating a master server from a secondary server. Providing the updating functionality to a secondary server would violate this rule. (See, RFC 2136—Dynamic Updates in the Domain Name System (DNS UPDATE) April 1997). Additionally, after primary DNS server 605 returns to an operational state, DHCP clients that send a lookup query to master server 1 for the domain name that was updated by DHCP server 600 would either receive a “not found” response or would receive outdated information.
A partial solution to this problem is to use BGP (border gateway protocol) and the anycast protocol. Anycast is a network addressing and routing scheme whereby data is routed to a “best” destination as viewed by the routing topology. The “best” destination is determined by BGP implementation. BGP is an inter-autonomous system routing protocol. Routes learned via BGP have associated properties that are used to select a route to a destination when multiple paths exist to that destination. These properties are referred to as BGP attributes.
In the anycast/BGP solution, all DNS servers have the same IP address. The DNS client utilizes an anycast IP address that directs the lookup request to a router. The router then directs the lookup request to an available DNS server based on the assigned BGP attributes. This allows a DNS client to use a single IP address to contact one of a number of available anycast DNS servers.
While the anycast/BGP solution solves many of the client-side problems associated with domain name systems, the solution is not suited for dynamic domain name systems. Anycast works well with short transaction times, but as transaction times increase so does the potential that a route may change during the transaction. For this reason, anycast cannot be reliably used to update multiple master servers in a dynamic DNS system.
What is needed is a dynamic DNS system in which multiple master servers are capable of processing updates from DHCP servers as long as at least one master server is online and in which when an offline server comes online it is automatically updated with the most current DNS information.